La base d'un système flexible repose sur la définition d'un contrat interne rigide contrat ou une interface que les objets doivent suivre. Dans ce contexte, nous définissons une interface Table où chaque objet cellule garantit l'existence de trois méthodes spécifiques : minLargeur(), , minHauteur(), et dessiner(largeur, hauteur).
1. Le contrat d'interface
En standardisant ces méthodes, la logique de mise en page peut calculer les dimensions globales des lignes et colonnes sans connaître les types de données internes des cellules individuelles. C'est un exemple classique de polymorphisme basé sur l'interface.
2. Implémentation de TextCell
Le TextCell constructeur prépare les données brutes en divisant les chaînes de caractères en tableaux ligne par ligne. Cela déplace la complexité de la phase de rendu vers la phase d'instanciation.
3. Dessin déterministe
Le dessiner(largeur, hauteur) méthode assure que chaque sortie de cellule est parfaitement alignée en utilisant une fonction répéter() d'aide. Cela maintient l'alignement vertical et horizontal indépendamment de la longueur du contenu.
$$\text{Marge} = \text{Largeur} - \text{longueurLigne}$$